package priv.pattern.Interpreterpattern;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;

/*
 * 作者：m鹏h
 * 时间；2024/8/11 12:45
 * 描述：解释器模式 客户端
 **/
// ClientTest.java
public class ClientTest {
 public static void main(String[] args) throws IOException {
  String expStr = getExpStr(); // 如：a+b
  HashMap<String, Integer> var = getValue(expStr);// var：{a=10, b=20}
  Calculator calculator = new Calculator(expStr);
  System.out.println("运算结果：" + expStr + "=" + calculator.run(var));
 }

 //获得表达式
 public static String getExpStr() throws IOException {
  System.out.print("请输入表达式：");
  return (new BufferedReader(new InputStreamReader(System.in))).readLine();
 }

 //获得值映射
 public static HashMap<String, Integer> getValue(String expStr) throws IOException {
  HashMap<String, Integer> map = new HashMap<>();

  for (char ch : expStr.toCharArray()) {
   if (ch != '+' && ch != '-') {
    if (!map.containsKey(String.valueOf(ch))) {
     System.out.print("请输入" + String.valueOf(ch) + "的值：");
     String in = (new BufferedReader(new InputStreamReader(System.in))).readLine();
     map.put(String.valueOf(ch), Integer.valueOf(in));
    }
   }
  }
  return map;
 }
}